package ewu.expressions

import ewu._

/**
 * Diese Klasse stellt die speziellen Arrayzugriffe auf 'first
 * sowie 'last aus Ada zur Verfuegung. Hierbei steht 'first
 * fuer den ersten Index einen Array, 'last fuer den letzten.
 * Beispiel: A'first
 */

case class ArrayKey(override val name: String, first: Boolean, last: Boolean) extends Name(name) {
  override def evaluate(env: Environment): Option[BigInt] = {
    env.getValue(name) match {
      case Some(x:ExpArray) => 
        if(first)
          return Some(BigInt(x.ifirst))
        else if(last)
          return Some(BigInt(x.ilast))
        else
          return None
      case _ => None
    }
  }
  
  override def toString: String = {
    if(first)
      return name + "'first"
    else if(last)
      return name + "'last"
    else
      return name
  }
}
